{
  "bundles": [
    {
      "@type": "NXBundle",
      "artifactId": "nuxeo-platform-web-common",
      "artifactVersion": "2021.66.4",
      "bundleGroup": {
        "@type": "NXBundleGroup",
        "bundleIds": [
          "org.nuxeo.ecm.platform.web.common",
          "org.nuxeo.ecm.platform.webapp.types"
        ],
        "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web",
        "id": "grp:org.nuxeo.ecm.platform.web",
        "name": "org.nuxeo.ecm.platform.web",
        "parentIds": [
          "grp:org.nuxeo.ecm.platform"
        ],
        "readmes": [],
        "version": "2021.66"
      },
      "bundleId": "org.nuxeo.ecm.platform.web.common",
      "components": [
        {
          "@type": "NXComponent",
          "componentClass": "org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService",
          "documentation": "\n    The pluggable authentication service defines a plugin API for the Nuxeo Authentication Filter.\n    This service let you :\n    - define new Authentication Plugins\n    - define authentication chains\n    @author Thierry Delprat (td@nuxeo.com)\n  \n",
          "documentationHtml": "<p>\nThe pluggable authentication service defines a plugin API for the Nuxeo Authentication Filter.\nThis service let you :\n- define new Authentication Plugins\n- define authentication chains\n</p><p></p>",
          "extensionPoints": [
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService",
              "descriptors": [
                "org.nuxeo.ecm.platform.ui.web.auth.service.AuthenticationPluginDescriptor"
              ],
              "documentation": "\n      Registry for Authentication Plugins.\n      Authentication plugins are responsible for :\n      - generating the authentication prompt (if needed)\n      - get the user identity\n      - checking the user credentials if they're not login/password based\n\n      Authentication plugin must implement the NuxeoAuthenticationPlugin interface.\n\n      Default implementation of Authentication Plugins are :\n      - Form based authentication\n      - HTTP Basic Authentication\n\n      @author Thierry Delprat (td@nuxeo.com)\n    \n",
              "documentationHtml": "<p>\nRegistry for Authentication Plugins.\nAuthentication plugins are responsible for :\n- generating the authentication prompt (if needed)\n- get the user identity\n- checking the user credentials if they&#39;re not login/password based\n</p><p>\nAuthentication plugin must implement the NuxeoAuthenticationPlugin interface.\n</p><p>\nDefault implementation of Authentication Plugins are :\n- Form based authentication\n- HTTP Basic Authentication\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService/ExtensionPoints/org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService--authenticators",
              "id": "org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService--authenticators",
              "label": "authenticators (org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService)",
              "name": "authenticators",
              "version": "2021.66.4"
            },
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService",
              "descriptors": [
                "org.nuxeo.ecm.platform.ui.web.auth.service.AuthenticationChainDescriptor"
              ],
              "documentation": "\n      Defines the chain of AuthenticationPlugin to use when trying to authenticate.\n      = The authentication Plugins are tried in the chain order.\n\n      @author Thierry Delprat (td@nuxeo.com)\n    \n",
              "documentationHtml": "<p>\nDefines the chain of AuthenticationPlugin to use when trying to authenticate.\n&#61; The authentication Plugins are tried in the chain order.\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService/ExtensionPoints/org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService--chain",
              "id": "org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService--chain",
              "label": "chain (org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService)",
              "name": "chain",
              "version": "2021.66.4"
            },
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService",
              "descriptors": [
                "org.nuxeo.ecm.platform.ui.web.auth.service.StartURLPatternDescriptor"
              ],
              "documentation": "\n      Defines a list of URL prefix that is considered safe to start a new session.\n      Typically, in default webapp you will have :\n      - GET url patterns\n      - nxstartup.faces\n      - RSS/ATOM get URL\n\n      @author Thierry Delprat (td@nuxeo.com)\n    \n",
              "documentationHtml": "<p>\nDefines a list of URL prefix that is considered safe to start a new session.\nTypically, in default webapp you will have :\n- GET url patterns\n- nxstartup.faces\n- RSS/ATOM get URL\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService/ExtensionPoints/org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService--startURL",
              "id": "org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService--startURL",
              "label": "startURL (org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService)",
              "name": "startURL",
              "version": "2021.66.4"
            },
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService",
              "descriptors": [
                "org.nuxeo.ecm.platform.ui.web.auth.service.SessionManagerDescriptor"
              ],
              "documentation": "\n      Contribute a SessionManager to handle Session and url manipulation\n\n      @author Thierry Delprat (td@nuxeo.com)\n    \n",
              "documentationHtml": "<p>\nContribute a SessionManager to handle Session and url manipulation\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService/ExtensionPoints/org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService--sessionManager",
              "id": "org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService--sessionManager",
              "label": "sessionManager (org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService)",
              "name": "sessionManager",
              "version": "2021.66.4"
            },
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService",
              "descriptors": [
                "org.nuxeo.ecm.platform.ui.web.auth.service.OpenUrlDescriptor"
              ],
              "documentation": "\n      Contribute pattern to define urls that can be accessed without authentication\n\n      @author Thierry Delprat (td@nuxeo.com)\n    \n",
              "documentationHtml": "<p>\nContribute pattern to define urls that can be accessed without authentication\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService/ExtensionPoints/org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService--openUrl",
              "id": "org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService--openUrl",
              "label": "openUrl (org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService)",
              "name": "openUrl",
              "version": "2021.66.4"
            },
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService",
              "descriptors": [
                "org.nuxeo.ecm.platform.ui.web.auth.service.SpecificAuthChainDescriptor"
              ],
              "documentation": "\n      Contribute specific authentication chain for specific urls or request headers.\n      This is usefull to be able to change the authentication plugins used for a dedicated protocol (WSS, WebDav ...)\n\n      @author Thierry Delprat (td@nuxeo.com)\n    \n",
              "documentationHtml": "<p>\nContribute specific authentication chain for specific urls or request headers.\nThis is usefull to be able to change the authentication plugins used for a dedicated protocol (WSS, WebDav ...)\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService/ExtensionPoints/org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService--specificChains",
              "id": "org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService--specificChains",
              "label": "specificChains (org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService)",
              "name": "specificChains",
              "version": "2021.66.4"
            },
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService",
              "descriptors": [
                "org.nuxeo.ecm.platform.ui.web.auth.service.LoginScreenConfig"
              ],
              "documentation": "\n      Configure the Login Screen : header, footer, styles, openid providers ...\n      <p>\n        The variable /nuxeo can be used to avoid\n        hardcoding the default application path (/nuxeo)\n      </p>\n\n\n      @author Thierry Delprat (td@nuxeo.com)\n    \n",
              "documentationHtml": "<p>\nConfigure the Login Screen : header, footer, styles, openid providers ...\n</p><p>\nThe variable /nuxeo can be used to avoid\nhardcoding the default application path (/nuxeo)\n</p>\n<p></p>",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService/ExtensionPoints/org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService--loginScreen",
              "id": "org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService--loginScreen",
              "label": "loginScreen (org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService)",
              "name": "loginScreen",
              "version": "2021.66.4"
            }
          ],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.runtime.LoginAsComponent--implementation",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService/Contributions/org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService--implementation",
              "id": "org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService--implementation",
              "registrationOrder": 0,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.runtime.LoginAsComponent",
                "name": "org.nuxeo.runtime.LoginAsComponent",
                "type": "service"
              },
              "version": "2021.66.4",
              "xml": "<extension point=\"implementation\" target=\"org.nuxeo.runtime.LoginAsComponent\">\n    <implementation class=\"org.nuxeo.ecm.platform.ui.web.auth.service.LoginAsImpl\"/>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService",
          "name": "org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService",
          "requirements": [],
          "resolutionOrder": 609,
          "services": [
            {
              "@type": "NXService",
              "componentId": "org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService/Services/org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService",
              "id": "org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService",
              "overriden": false,
              "version": "2021.66.4"
            }
          ],
          "startOrder": 902,
          "version": "2021.66.4",
          "xmlFileContent": "<?xml version='1.0' encoding='UTF-8'?>\n<component name=\"org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService\">\n  <implementation class=\"org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService\"/>\n\n  <service>\n    <provide interface=\"org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService\"/>\n  </service>\n\n  <documentation>\n    The pluggable authentication service defines a plugin API for the Nuxeo Authentication Filter.\n    This service let you :\n    - define new Authentication Plugins\n    - define authentication chains\n    @author Thierry Delprat (td@nuxeo.com)\n  </documentation>\n\n  <extension target=\"org.nuxeo.runtime.LoginAsComponent\" point=\"implementation\">\n    <implementation class=\"org.nuxeo.ecm.platform.ui.web.auth.service.LoginAsImpl\"/>\n  </extension>\n\n  <extension-point name=\"authenticators\">\n    <documentation>\n      Registry for Authentication Plugins.\n      Authentication plugins are responsible for :\n      - generating the authentication prompt (if needed)\n      - get the user identity\n      - checking the user credentials if they're not login/password based\n\n      Authentication plugin must implement the NuxeoAuthenticationPlugin interface.\n\n      Default implementation of Authentication Plugins are :\n      - Form based authentication\n      - HTTP Basic Authentication\n\n      @author Thierry Delprat (td@nuxeo.com)\n    </documentation>\n\n    <object class=\"org.nuxeo.ecm.platform.ui.web.auth.service.AuthenticationPluginDescriptor\"/>\n  </extension-point>\n\n  <extension-point name=\"chain\">\n    <documentation>\n      Defines the chain of AuthenticationPlugin to use when trying to authenticate.\n      = The authentication Plugins are tried in the chain order.\n\n      @author Thierry Delprat (td@nuxeo.com)\n    </documentation>\n    <object class=\"org.nuxeo.ecm.platform.ui.web.auth.service.AuthenticationChainDescriptor\"/>\n  </extension-point>\n\n  <extension-point name=\"startURL\">\n    <documentation>\n      Defines a list of URL prefix that is considered safe to start a new session.\n      Typically, in default webapp you will have :\n      - GET url patterns\n      - nxstartup.faces\n      - RSS/ATOM get URL\n\n      @author Thierry Delprat (td@nuxeo.com)\n    </documentation>\n    <object class=\"org.nuxeo.ecm.platform.ui.web.auth.service.StartURLPatternDescriptor\"/>\n  </extension-point>\n\n  <extension-point name=\"sessionManager\">\n    <documentation>\n      Contribute a SessionManager to handle Session and url manipulation\n\n      @author Thierry Delprat (td@nuxeo.com)\n    </documentation>\n    <object class=\"org.nuxeo.ecm.platform.ui.web.auth.service.SessionManagerDescriptor\"/>\n  </extension-point>\n\n  <extension-point name=\"openUrl\">\n    <documentation>\n      Contribute pattern to define urls that can be accessed without authentication\n\n      @author Thierry Delprat (td@nuxeo.com)\n    </documentation>\n    <object class=\"org.nuxeo.ecm.platform.ui.web.auth.service.OpenUrlDescriptor\"/>\n  </extension-point>\n\n\n  <extension-point name=\"specificChains\">\n    <documentation>\n      Contribute specific authentication chain for specific urls or request headers.\n      This is usefull to be able to change the authentication plugins used for a dedicated protocol (WSS, WebDav ...)\n\n      @author Thierry Delprat (td@nuxeo.com)\n    </documentation>\n    <object class=\"org.nuxeo.ecm.platform.ui.web.auth.service.SpecificAuthChainDescriptor\"/>\n  </extension-point>\n\n\n  <extension-point name=\"loginScreen\">\n\n    <documentation>\n      Configure the Login Screen : header, footer, styles, openid providers ...\n      <p>\n        The variable ${org.nuxeo.ecm.contextPath} can be used to avoid\n        hardcoding the default application path (/nuxeo)\n      </p>\n\n      @author Thierry Delprat (td@nuxeo.com)\n    </documentation>\n    <object class=\"org.nuxeo.ecm.platform.ui.web.auth.service.LoginScreenConfig\"/>\n\n  </extension-point>\n\n</component>",
          "xmlFileName": "/OSGI-INF/authentication-framework.xml",
          "xmlPureComponent": false
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService--authenticators",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.ui.web.auth.defaultConfig/Contributions/org.nuxeo.ecm.platform.ui.web.auth.defaultConfig--authenticators",
              "id": "org.nuxeo.ecm.platform.ui.web.auth.defaultConfig--authenticators",
              "registrationOrder": 6,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService",
                "name": "org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService",
                "type": "service"
              },
              "version": "2021.66.4",
              "xml": "<?xml version='1.0' encoding='UTF-8'?>\n<extension point=\"authenticators\" target=\"org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService\">\n\n    <authenticationPlugin class=\"org.nuxeo.ecm.platform.ui.web.auth.plugins.FormAuthenticator\" enabled=\"true\" name=\"FORM_AUTH\">\n      <needStartingURLSaving>true</needStartingURLSaving>\n      <parameters>\n        <parameter name=\"LoginPage\">login.jsp</parameter>\n        <parameter name=\"UsernameKey\">user_name</parameter>\n        <parameter name=\"PasswordKey\">********</parameter>\n      </parameters>\n    </authenticationPlugin>\n\n    <authenticationPlugin class=\"org.nuxeo.ecm.platform.ui.web.auth.plugins.BasicAuthenticator\" enabled=\"true\" name=\"BASIC_AUTH\">\n      <needStartingURLSaving>false</needStartingURLSaving>\n      <stateful>false</stateful>\n      <parameters>\n        <parameter name=\"RealmName\">Nuxeo 5 EP</parameter>\n        <parameter name=\"AutoPrompt\">false</parameter>\n        <parameter name=\"ForcePromptURL_RSS\">\n          getSyndicationDocument.faces\n        </parameter>\n        <parameter name=\"ForcePromptURL_RSS_SEARCH\">\n          getSyndicationSearch.faces\n        </parameter>\n        <parameter name=\"ForcePromptURL_Restlet\">restAPI/</parameter>\n        <parameter name=\"ForcePromptURL_WebEngineRest\">site/api/</parameter>\n        <parameter name=\"ForcePromptURL_WebEngineRSS\">site/sites/@rss/</parameter>\n        <parameter name=\"ForcePromptURL_WebEngineBlogsRSS\">site/blogs/@rss/</parameter>\n      </parameters>\n    </authenticationPlugin>\n\n    <authenticationPlugin class=\"org.nuxeo.ecm.platform.ui.web.auth.plugins.AnonymousAuthenticator\" enabled=\"true\" name=\"ANONYMOUS_AUTH\">\n    </authenticationPlugin>\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService--chain",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.ui.web.auth.defaultConfig/Contributions/org.nuxeo.ecm.platform.ui.web.auth.defaultConfig--chain",
              "id": "org.nuxeo.ecm.platform.ui.web.auth.defaultConfig--chain",
              "registrationOrder": 0,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService",
                "name": "org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService",
                "type": "service"
              },
              "version": "2021.66.4",
              "xml": "<extension point=\"chain\" target=\"org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService\">\n\n    <authenticationChain>\n      <plugins>\n        <plugin>BASIC_AUTH</plugin>\n        <plugin>TOKEN_AUTH</plugin>\n        <plugin>OAUTH2_AUTH</plugin>\n        <plugin>JWT_AUTH</plugin>\n        <plugin>FORM_AUTH</plugin>\n        <plugin>ANONYMOUS_AUTH</plugin>\n      </plugins>\n    </authenticationChain>\n\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService--startURL",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.ui.web.auth.defaultConfig/Contributions/org.nuxeo.ecm.platform.ui.web.auth.defaultConfig--startURL",
              "id": "org.nuxeo.ecm.platform.ui.web.auth.defaultConfig--startURL",
              "registrationOrder": 4,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService",
                "name": "org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService",
                "type": "service"
              },
              "version": "2021.66.4",
              "xml": "<extension point=\"startURL\" target=\"org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService\">\n\n    <startURLPattern>\n      <patterns>\n        <pattern>nxdoc/</pattern>\n        <pattern>nxpath/</pattern>\n        <pattern>getDocument.faces</pattern>\n        <pattern>nxstartup.faces</pattern>\n        <pattern>getSyndicationDocument.faces</pattern>\n        <pattern>getSyndicationSearch.faces</pattern>\n        <pattern>nxfile/</pattern>\n        <pattern>nxbigfile/</pattern>\n        <pattern>nxbigblob/</pattern>\n        <pattern>nxpdffile/</pattern>\n        <pattern>nxeditfile/</pattern>\n      </patterns>\n    </startURLPattern>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.ui.web.auth.defaultConfig",
          "name": "org.nuxeo.ecm.platform.ui.web.auth.defaultConfig",
          "requirements": [],
          "resolutionOrder": 610,
          "services": [],
          "startOrder": 553,
          "version": "2021.66.4",
          "xmlFileContent": "<?xml version='1.0' encoding='UTF-8'?>\n<component name=\"org.nuxeo.ecm.platform.ui.web.auth.defaultConfig\">\n\n  <extension target=\"org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService\" point=\"authenticators\">\n\n    <authenticationPlugin name=\"FORM_AUTH\" enabled=\"true\" class=\"org.nuxeo.ecm.platform.ui.web.auth.plugins.FormAuthenticator\">\n      <needStartingURLSaving>true</needStartingURLSaving>\n      <parameters>\n        <parameter name=\"LoginPage\">login.jsp</parameter>\n        <parameter name=\"UsernameKey\">user_name</parameter>\n        <parameter name=\"PasswordKey\">********</parameter>\n      </parameters>\n    </authenticationPlugin>\n\n    <authenticationPlugin name=\"BASIC_AUTH\" enabled=\"true\" class=\"org.nuxeo.ecm.platform.ui.web.auth.plugins.BasicAuthenticator\">\n      <needStartingURLSaving>false</needStartingURLSaving>\n      <stateful>false</stateful>\n      <parameters>\n        <parameter name=\"RealmName\">Nuxeo 5 EP</parameter>\n        <parameter name=\"AutoPrompt\">false</parameter>\n        <parameter name=\"ForcePromptURL_RSS\">\n          getSyndicationDocument.faces\n        </parameter>\n        <parameter name=\"ForcePromptURL_RSS_SEARCH\">\n          getSyndicationSearch.faces\n        </parameter>\n        <parameter name=\"ForcePromptURL_Restlet\">restAPI/</parameter>\n        <parameter name=\"ForcePromptURL_WebEngineRest\">site/api/</parameter>\n        <parameter name=\"ForcePromptURL_WebEngineRSS\">site/sites/@rss/</parameter>\n        <parameter name=\"ForcePromptURL_WebEngineBlogsRSS\">site/blogs/@rss/</parameter>\n      </parameters>\n    </authenticationPlugin>\n\n    <authenticationPlugin name=\"ANONYMOUS_AUTH\" enabled=\"true\" class=\"org.nuxeo.ecm.platform.ui.web.auth.plugins.AnonymousAuthenticator\">\n    </authenticationPlugin>\n  </extension>\n\n  <extension target=\"org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService\" point=\"chain\">\n\n    <authenticationChain>\n      <plugins>\n        <plugin>BASIC_AUTH</plugin>\n        <plugin>TOKEN_AUTH</plugin>\n        <plugin>OAUTH2_AUTH</plugin>\n        <plugin>JWT_AUTH</plugin>\n        <plugin>FORM_AUTH</plugin>\n        <plugin>ANONYMOUS_AUTH</plugin>\n      </plugins>\n    </authenticationChain>\n\n  </extension>\n\n  <extension target=\"org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService\" point=\"startURL\">\n\n    <startURLPattern>\n      <patterns>\n        <pattern>nxdoc/</pattern>\n        <pattern>nxpath/</pattern>\n        <pattern>getDocument.faces</pattern>\n        <pattern>nxstartup.faces</pattern>\n        <pattern>getSyndicationDocument.faces</pattern>\n        <pattern>getSyndicationSearch.faces</pattern>\n        <pattern>nxfile/</pattern>\n        <pattern>nxbigfile/</pattern>\n        <pattern>nxbigblob/</pattern>\n        <pattern>nxpdffile/</pattern>\n        <pattern>nxeditfile/</pattern>\n      </patterns>\n    </startURLPattern>\n\n  </extension>\n\n</component>",
          "xmlFileName": "/OSGI-INF/authentication-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "componentClass": "org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService",
          "documentation": "\n    The Request Controller service provides an extension point to apply specific configuration\n    to httpRequest mapping a defined URL pattern. It's possible to handle synchronization, transaction or cache\n    configuration.\n    @author Thierry Delprat (td@nuxeo.com)\n  \n",
          "documentationHtml": "<p>\nThe Request Controller service provides an extension point to apply specific configuration\nto httpRequest mapping a defined URL pattern. It&#39;s possible to handle synchronization, transaction or cache\nconfiguration.\n</p><p></p>",
          "extensionPoints": [
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService",
              "descriptors": [
                "org.nuxeo.ecm.platform.web.common.requestcontroller.service.FilterConfigDescriptor"
              ],
              "documentation": "\n      Define a new filterConfig.\n\n      -filterConfig\n        - name: name of the Filter.\n        - transactional: use transaction.\n        - synchonize: is synchronized\n        - cached: if true, add cache-control to header\n        - cacheTime: cache duration.\n        - private: if true, cache is private, public if false.\n\n      -pattern: url pattern to match\n\n      Example of a filterConfig Registration:\n\n      <code>\n    <filterConfig cached=\"true\" cachetime=\"3600\" name=\"filterName\"\n        private=\"true\" synchonize=\"true\" transactional=\"true\">\n        <pattern>/nuxeo/urlPattern/.*</pattern>\n    </filterConfig>\n</code>\n\n    @author Thierry Delprat (td@nuxeo.com)\n  \n",
              "documentationHtml": "<p>\nDefine a new filterConfig.\n</p><p>\n-filterConfig\n- name: name of the Filter.\n- transactional: use transaction.\n- synchonize: is synchronized\n- cached: if true, add cache-control to header\n- cacheTime: cache duration.\n- private: if true, cache is private, public if false.\n</p><p>\n-pattern: url pattern to match\n</p><p>\nExample of a filterConfig Registration:\n</p><p>\n</p><pre><code>    &lt;filterConfig cached&#61;&#34;true&#34; cachetime&#61;&#34;3600&#34; name&#61;&#34;filterName&#34;\n        private&#61;&#34;true&#34; synchonize&#61;&#34;true&#34; transactional&#61;&#34;true&#34;&gt;\n        &lt;pattern&gt;/nuxeo/urlPattern/.*&lt;/pattern&gt;\n    &lt;/filterConfig&gt;\n</code></pre><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService/ExtensionPoints/org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService--filterConfig",
              "id": "org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService--filterConfig",
              "label": "filterConfig (org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService)",
              "name": "filterConfig",
              "version": "2021.66.4"
            },
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService",
              "descriptors": [
                "org.nuxeo.ecm.platform.web.common.requestcontroller.service.NuxeoCorsFilterDescriptor"
              ],
              "documentation": "\n      Add a CORS compliant url's pattern\n\n      Mandatory:\n       - name: name of the config\n       - pattern: url pattern to match\n\n      Optionnal:\n       - allowGenericHttpRequests: If false, only valid and accepted CORS\n         requests that be allowed (strict CORS filtering).\n       - allowOrigin: Whitespace-separated list of origins that the CORS\n         filter must allow.\n       - allowSubdomains: If true the CORS filter will allow requests from any\n         origin which is a subdomain origin of the allowed origins.\n       - supportedMethods: List of the supported HTTP methods.\n       - supportedHeaders: The names of the supported author request headers.\n       - exposedHeaders: List of the response headers other than simple\n         response headers that the browser should expose to the author of the\n         cross-domain request through the XMLHttpRequest.getResponseHeader()\n         method.\n       - supportsCredentials: Indicates whether user credentials, such as\n         cookies, HTTP authentication or client-side certificates, are\n         supported.\n       - maxAge: Indicates how long the results of a preflight request\n         can be cached by the web browser, in seconds.\n\n      Some samples:\n       - Minimal contribution:\n      <code>\n    <corsConfig name=\"minimal\">\n        <pattern>/nuxeo/site/.*</pattern>\n    </corsConfig>\n</code>\n\n\n       - Contribution with default values:\n      <code>\n    <corsConfig allowGenericHttpRequests=\"true\" allowOrigin=\"*\"\n        allowSubdomains=\"false\" exposedHeaders=\"\" maxAge=\"-1\"\n        name=\"defaults\" supportedHeaders=\"*\"\n        supportedMethods=\"GET, POST, HEAD, OPTIONS\" supportsCredentials=\"true\">\n        <pattern>/nuxeo/site/.*</pattern>\n    </corsConfig>\n</code>\n\n\n       - Other dummy contribution:\n      <code>\n    <corsConfig allowGenericHttpRequests=\"true\"\n        allowOrigin=\"http://example.com http://example.com:8080\"\n        allowSubdomains=\"true\" exposedHeaders=\"X-Custom-1, X-Custom-2\"\n        maxAge=\"3600\" name=\"dummy\"\n        supportedHeaders=\"Content-Type, X-Requested-With\"\n        supportedMethods=\"GET\" supportsCredentials=\"false\">\n        <pattern>/nuxeo/site/.*</pattern>\n    </corsConfig>\n</code>\n\n\n      @since 5.7.2\n    \n",
              "documentationHtml": "<p>\nAdd a CORS compliant url&#39;s pattern\n</p><p>\nMandatory:\n- name: name of the config\n- pattern: url pattern to match\n</p><p>\nOptionnal:\n- allowGenericHttpRequests: If false, only valid and accepted CORS\nrequests that be allowed (strict CORS filtering).\n- allowOrigin: Whitespace-separated list of origins that the CORS\nfilter must allow.\n- allowSubdomains: If true the CORS filter will allow requests from any\norigin which is a subdomain origin of the allowed origins.\n- supportedMethods: List of the supported HTTP methods.\n- supportedHeaders: The names of the supported author request headers.\n- exposedHeaders: List of the response headers other than simple\nresponse headers that the browser should expose to the author of the\ncross-domain request through the XMLHttpRequest.getResponseHeader()\nmethod.\n- supportsCredentials: Indicates whether user credentials, such as\ncookies, HTTP authentication or client-side certificates, are\nsupported.\n- maxAge: Indicates how long the results of a preflight request\ncan be cached by the web browser, in seconds.\n</p><p>\nSome samples:\n- Minimal contribution:\n</p><p></p><pre><code>    &lt;corsConfig name&#61;&#34;minimal&#34;&gt;\n        &lt;pattern&gt;/nuxeo/site/.*&lt;/pattern&gt;\n    &lt;/corsConfig&gt;\n</code></pre><p>\n- Contribution with default values:\n</p><p></p><pre><code>    &lt;corsConfig allowGenericHttpRequests&#61;&#34;true&#34; allowOrigin&#61;&#34;*&#34;\n        allowSubdomains&#61;&#34;false&#34; exposedHeaders&#61;&#34;&#34; maxAge&#61;&#34;-1&#34;\n        name&#61;&#34;defaults&#34; supportedHeaders&#61;&#34;*&#34;\n        supportedMethods&#61;&#34;GET, POST, HEAD, OPTIONS&#34; supportsCredentials&#61;&#34;true&#34;&gt;\n        &lt;pattern&gt;/nuxeo/site/.*&lt;/pattern&gt;\n    &lt;/corsConfig&gt;\n</code></pre><p>\n- Other dummy contribution:\n</p><p></p><pre><code>    &lt;corsConfig allowGenericHttpRequests&#61;&#34;true&#34;\n        allowOrigin&#61;&#34;http://example.com http://example.com:8080&#34;\n        allowSubdomains&#61;&#34;true&#34; exposedHeaders&#61;&#34;X-Custom-1, X-Custom-2&#34;\n        maxAge&#61;&#34;3600&#34; name&#61;&#34;dummy&#34;\n        supportedHeaders&#61;&#34;Content-Type, X-Requested-With&#34;\n        supportedMethods&#61;&#34;GET&#34; supportsCredentials&#61;&#34;false&#34;&gt;\n        &lt;pattern&gt;/nuxeo/site/.*&lt;/pattern&gt;\n    &lt;/corsConfig&gt;\n</code></pre><p>\n&#64;since 5.7.2\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService/ExtensionPoints/org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService--corsConfig",
              "id": "org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService--corsConfig",
              "label": "corsConfig (org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService)",
              "name": "corsConfig",
              "version": "2021.66.4"
            },
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService",
              "descriptors": [
                "org.nuxeo.ecm.platform.web.common.requestcontroller.service.NuxeoHeaderDescriptor"
              ],
              "documentation": "\n      Define headers to apply to the HTTP response.\n\n      -header\n      - name: name of the header.\n      - enabled: flag to enable/disable a header (default value is true)\n\n      Example of a response header Registration:\n\n      <code>\n    <header enabled=\"true\" name=\"WWW-Authenticate\">basic</header>\n</code>\n\n      @author Thierry Martins (tm@nuxeo.com)\n      @since 6.0\n    \n",
              "documentationHtml": "<p>\nDefine headers to apply to the HTTP response.\n</p><p>\n-header\n- name: name of the header.\n- enabled: flag to enable/disable a header (default value is true)\n</p><p>\nExample of a response header Registration:\n</p><p>\n</p><pre><code>    &lt;header enabled&#61;&#34;true&#34; name&#61;&#34;WWW-Authenticate&#34;&gt;basic&lt;/header&gt;\n</code></pre><p>\n&#64;since 6.0\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService/ExtensionPoints/org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService--responseHeaders",
              "id": "org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService--responseHeaders",
              "label": "responseHeaders (org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService)",
              "name": "responseHeaders",
              "version": "2021.66.4"
            }
          ],
          "extensions": [],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService",
          "name": "org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService",
          "requirements": [],
          "resolutionOrder": 613,
          "services": [
            {
              "@type": "NXService",
              "componentId": "org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService/Services/org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerManager",
              "id": "org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerManager",
              "overriden": false,
              "version": "2021.66.4"
            }
          ],
          "startOrder": 916,
          "version": "2021.66.4",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService\">\n  <implementation\n          class=\"org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService\" />\n  <documentation>\n    The Request Controller service provides an extension point to apply specific configuration\n    to httpRequest mapping a defined URL pattern. It's possible to handle synchronization, transaction or cache\n    configuration.\n    @author Thierry Delprat (td@nuxeo.com)\n  </documentation>\n\n  <service>\n    <provide\n      interface=\"org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerManager\" />\n  </service>\n\n  <extension-point name=\"filterConfig\">\n  <documentation>\n      Define a new filterConfig.\n\n      -filterConfig\n        - name: name of the Filter.\n        - transactional: use transaction.\n        - synchonize: is synchronized\n        - cached: if true, add cache-control to header\n        - cacheTime: cache duration.\n        - private: if true, cache is private, public if false.\n\n      -pattern: url pattern to match\n\n      Example of a filterConfig Registration:\n\n      <code>\n\t\t    <filterConfig name=\"filterName\" transactional=\"true\" synchonize=\"true\"\n\t\t     cached=\"true\" private=\"true\" cachetime=\"3600\">\n\t\t      <pattern>/nuxeo/urlPattern/.*</pattern>\n\t\t    </filterConfig>\n      </code>\n    @author Thierry Delprat (td@nuxeo.com)\n  </documentation>\n    <object\n      class=\"org.nuxeo.ecm.platform.web.common.requestcontroller.service.FilterConfigDescriptor\" />\n  </extension-point>\n\n  <extension-point name=\"corsConfig\">\n    <documentation>\n      Add a CORS compliant url's pattern\n\n      Mandatory:\n       - name: name of the config\n       - pattern: url pattern to match\n\n      Optionnal:\n       - allowGenericHttpRequests: If false, only valid and accepted CORS\n         requests that be allowed (strict CORS filtering).\n       - allowOrigin: Whitespace-separated list of origins that the CORS\n         filter must allow.\n       - allowSubdomains: If true the CORS filter will allow requests from any\n         origin which is a subdomain origin of the allowed origins.\n       - supportedMethods: List of the supported HTTP methods.\n       - supportedHeaders: The names of the supported author request headers.\n       - exposedHeaders: List of the response headers other than simple\n         response headers that the browser should expose to the author of the\n         cross-domain request through the XMLHttpRequest.getResponseHeader()\n         method.\n       - supportsCredentials: Indicates whether user credentials, such as\n         cookies, HTTP authentication or client-side certificates, are\n         supported.\n       - maxAge: Indicates how long the results of a preflight request\n         can be cached by the web browser, in seconds.\n\n      Some samples:\n       - Minimal contribution:\n      <code>\n        <corsConfig name=\"minimal\">\n          <pattern>/nuxeo/site/.*</pattern>\n        </corsConfig>\n      </code>\n\n       - Contribution with default values:\n      <code>\n        <corsConfig name=\"defaults\" allowGenericHttpRequests=\"true\"\n          allowOrigin=\"*\" allowSubdomains=\"false\" supportedMethods=\"GET, POST, HEAD, OPTIONS\"\n          supportedHeaders=\"*\" exposedHeaders=\"\"\n          supportsCredentials=\"true\" maxAge=\"-1\">\n          <pattern>/nuxeo/site/.*</pattern>\n        </corsConfig>\n      </code>\n\n       - Other dummy contribution:\n      <code>\n        <corsConfig name=\"dummy\" allowGenericHttpRequests=\"true\"\n          allowOrigin=\"http://example.com http://example.com:8080\"\n          allowSubdomains=\"true\" supportedMethods=\"GET\"\n          supportedHeaders=\"Content-Type, X-Requested-With\"\n          exposedHeaders=\"X-Custom-1, X-Custom-2\"\n          supportsCredentials=\"false\" maxAge=\"3600\">\n          <pattern>/nuxeo/site/.*</pattern>\n        </corsConfig>\n      </code>\n\n      @since 5.7.2\n    </documentation>\n    <object\n      class=\"org.nuxeo.ecm.platform.web.common.requestcontroller.service.NuxeoCorsFilterDescriptor\" />\n  </extension-point>\n\n  <extension-point name=\"responseHeaders\">\n    <documentation>\n      Define headers to apply to the HTTP response.\n\n      -header\n      - name: name of the header.\n      - enabled: flag to enable/disable a header (default value is true)\n\n      Example of a response header Registration:\n\n      <code>\n        <header name=\"WWW-Authenticate\" enabled=\"true\">basic</header>\n      </code>\n      @author Thierry Martins (tm@nuxeo.com)\n      @since 6.0\n    </documentation>\n    <object\n      class=\"org.nuxeo.ecm.platform.web.common.requestcontroller.service.NuxeoHeaderDescriptor\" />\n  </extension-point>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/web-request-controller-framework.xml",
          "xmlPureComponent": false
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService--filterConfig",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService.defaultContrib/Contributions/org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService.defaultContrib--filterConfig",
              "id": "org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService.defaultContrib--filterConfig",
              "registrationOrder": 3,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService",
                "name": "org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService",
                "type": "service"
              },
              "version": "2021.66.4",
              "xml": "<extension point=\"filterConfig\" target=\"org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService\">\n\n    <filterConfig cacheTime=\"31536000\" cached=\"true\" name=\"cachednxfile\" private=\"true\" synchonize=\"false\" transactional=\"false\">\n      <!-- if url contains doc changeToken: approximately one year -->\n      <!-- transaction is manually handled in DownloadServlet -->\n      <pattern>/nuxeo/nxfile/.*\\\\?.*changeToken=.+</pattern>\n    </filterConfig>\n    <filterConfig cacheTime=\"0\" cached=\"true\" name=\"nxfile\" private=\"true\" synchonize=\"false\" transactional=\"false\">\n      <!-- transaction is manually handled in DownloadServlet -->\n      <pattern>/nuxeo/nxfile/.*</pattern>\n    </filterConfig>\n    <filterConfig cached=\"true\" name=\"BigFileDownloaderRequest\" private=\"true\" synchonize=\"false\" transactional=\"false\">\n      <!-- transaction is manually handled in DownloadServlet -->\n      <pattern>/nuxeo/nxbigfile/.*</pattern>\n    </filterConfig>\n\n    <filterConfig cached=\"true\" name=\"BigZipFileDownloaderRequest\" private=\"true\" synchonize=\"true\" transactional=\"true\">\n      <pattern>/nuxeo/nxbigzipfile/.*</pattern>\n    </filterConfig>\n\n    <filterConfig cacheTime=\"3600\" cached=\"true\" name=\"img\">\n      <pattern>/nuxeo/img.*</pattern>\n    </filterConfig>\n\n    <filterConfig cacheTime=\"3600\" cached=\"true\" name=\"icons\">\n      <pattern>/nuxeo/icons.*</pattern>\n    </filterConfig>\n\n    <filterConfig cacheTime=\"3600\" cached=\"true\" name=\"js\">\n      <pattern>/nuxeo/js.*</pattern>\n    </filterConfig>\n\n    <filterConfig cacheTime=\"3600\" cached=\"true\" name=\"scripts\">\n      <pattern>/nuxeo/scripts.*</pattern>\n    </filterConfig>\n\n    <filterConfig cacheTime=\"3600\" cached=\"true\" name=\"waitdialog\">\n      <pattern>/nuxeo/waitdialog.*</pattern>\n    </filterConfig>\n\n    <filterConfig cacheTime=\"31536000\" cached=\"true\" name=\"cachedBPR\" private=\"true\" transactional=\"true\">\n      <!-- if url contains doc changeToken: approximately one year -->\n      <pattern>/nuxeo/.*/@(blob|preview|rendition).*\\\\?.*changeToken=.+</pattern>\n    </filterConfig>\n\n    <filterConfig cacheTime=\"0\" cached=\"true\" name=\"BPR\" private=\"true\" transactional=\"true\">\n      <pattern>/nuxeo/.*/@(blob|preview|rendition).*</pattern>\n    </filterConfig>\n\n    <filterConfig cached=\"false\" name=\"nxadmin\" private=\"true\">\n      <pattern>/nuxeo/nxadmin/.*</pattern>\n    </filterConfig>\n\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService--responseHeaders",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService.defaultContrib/Contributions/org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService.defaultContrib--responseHeaders",
              "id": "org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService.defaultContrib--responseHeaders",
              "registrationOrder": 0,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService",
                "name": "org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService",
                "type": "service"
              },
              "version": "2021.66.4",
              "xml": "<extension point=\"responseHeaders\" target=\"org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService\">\n    <header name=\"X-UA-Compatible\">IE=10; IE=11</header>\n    <header name=\"Cache-Control\">no-cache</header>\n    <header name=\"X-Content-Type-Options\">nosniff</header>\n    <header name=\"X-XSS-Protection\">1; mode=block</header>\n    <header name=\"X-Frame-Options\">SAMEORIGIN</header>\n    <header name=\"Referrer-Policy\">strict-origin-when-cross-origin</header>\n    <!-- this is a permissive Content-Security-Policy, which should be configured for more security -->\n    <header name=\"Content-Security-Policy\">img-src data: blob: *; default-src blob: *; script-src 'unsafe-inline' 'unsafe-eval' data: *; style-src 'unsafe-inline' *; font-src data: *</header>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService.defaultContrib",
          "name": "org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService.defaultContrib",
          "requirements": [],
          "resolutionOrder": 614,
          "services": [],
          "startOrder": 594,
          "version": "2021.66.4",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService.defaultContrib\">\n\n  <extension target=\"org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService\"\n    point=\"filterConfig\">\n\n    <filterConfig name=\"cachednxfile\" transactional=\"false\" synchonize=\"false\" cached=\"true\" private=\"true\" cacheTime=\"31536000\">\n      <!-- if url contains doc changeToken: approximately one year -->\n      <!-- transaction is manually handled in DownloadServlet -->\n      <pattern>${org.nuxeo.ecm.contextPath}/nxfile/.*\\\\?.*changeToken=.+</pattern>\n    </filterConfig>\n    <filterConfig name=\"nxfile\" transactional=\"false\" synchonize=\"false\" cached=\"true\" private=\"true\" cacheTime=\"0\">\n      <!-- transaction is manually handled in DownloadServlet -->\n      <pattern>${org.nuxeo.ecm.contextPath}/nxfile/.*</pattern>\n    </filterConfig>\n    <filterConfig name=\"BigFileDownloaderRequest\" cached=\"true\" private=\"true\"\n      transactional=\"false\" synchonize=\"false\">\n      <!-- transaction is manually handled in DownloadServlet -->\n      <pattern>${org.nuxeo.ecm.contextPath}/nxbigfile/.*</pattern>\n    </filterConfig>\n\n    <filterConfig name=\"BigZipFileDownloaderRequest\" cached=\"true\" private=\"true\"\n      transactional=\"true\" synchonize=\"true\">\n      <pattern>${org.nuxeo.ecm.contextPath}/nxbigzipfile/.*</pattern>\n    </filterConfig>\n\n    <filterConfig name=\"img\" cached=\"true\" cacheTime=\"3600\">\n      <pattern>${org.nuxeo.ecm.contextPath}/img.*</pattern>\n    </filterConfig>\n\n    <filterConfig name=\"icons\" cached=\"true\" cacheTime=\"3600\">\n      <pattern>${org.nuxeo.ecm.contextPath}/icons.*</pattern>\n    </filterConfig>\n\n    <filterConfig name=\"js\" cached=\"true\" cacheTime=\"3600\">\n      <pattern>${org.nuxeo.ecm.contextPath}/js.*</pattern>\n    </filterConfig>\n\n    <filterConfig name=\"scripts\" cached=\"true\" cacheTime=\"3600\">\n      <pattern>${org.nuxeo.ecm.contextPath}/scripts.*</pattern>\n    </filterConfig>\n\n    <filterConfig name=\"waitdialog\" cached=\"true\" cacheTime=\"3600\">\n      <pattern>${org.nuxeo.ecm.contextPath}/waitdialog.*</pattern>\n    </filterConfig>\n\n    <filterConfig name=\"cachedBPR\" cached=\"true\" private=\"true\" cacheTime=\"31536000\" transactional=\"true\">\n      <!-- if url contains doc changeToken: approximately one year -->\n      <pattern>${org.nuxeo.ecm.contextPath}/.*/@(blob|preview|rendition).*\\\\?.*changeToken=.+</pattern>\n    </filterConfig>\n\n    <filterConfig name=\"BPR\" cached=\"true\" private=\"true\" cacheTime=\"0\" transactional=\"true\">\n      <pattern>${org.nuxeo.ecm.contextPath}/.*/@(blob|preview|rendition).*</pattern>\n    </filterConfig>\n\n    <filterConfig name=\"nxadmin\" cached=\"false\" private=\"true\">\n      <pattern>${org.nuxeo.ecm.contextPath}/nxadmin/.*</pattern>\n    </filterConfig>\n\n  </extension>\n\n  <extension target=\"org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService\"\n    point=\"responseHeaders\">\n    <header name=\"X-UA-Compatible\">IE=10; IE=11</header>\n    <header name=\"Cache-Control\">no-cache</header>\n    <header name=\"X-Content-Type-Options\">nosniff</header>\n    <header name=\"X-XSS-Protection\">1; mode=block</header>\n    <header name=\"X-Frame-Options\">${nuxeo.frame.options:=SAMEORIGIN}</header>\n    <header name=\"Referrer-Policy\">${nuxeo.referrer.policy:=strict-origin-when-cross-origin}</header>\n    <!-- this is a permissive Content-Security-Policy, which should be configured for more security -->\n    <header name=\"Content-Security-Policy\">${nuxeo.content.security.policy:=img-src data: blob: *; default-src blob: *; script-src 'unsafe-inline' 'unsafe-eval' data: *; style-src 'unsafe-inline' *; font-src data: *}</header>\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/web-request-controller-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "componentClass": "org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingComponent",
          "documentation": "\n\t\tThe pluggable exception service. All exceptions that\n\t\tbubbles up outside\n\t\tnuxeo are caught by the NuxeoExceptionFilter.\n\t\tThis\n\t\tservice customize the handler that will deal with an exception.\n\t\t@author Alexandre Russel (arussel@nuxeo.com), Benjamin JALON (bjalon@nuxeo.com)\n\t\n",
          "documentationHtml": "<p>\nThe pluggable exception service. All exceptions that\nbubbles up outside\nnuxeo are caught by the NuxeoExceptionFilter.\nThis\nservice customize the handler that will deal with an exception.\n</p><p></p>",
          "extensionPoints": [
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService",
              "descriptors": [
                "org.nuxeo.ecm.platform.web.common.exceptionhandling.descriptor.ExceptionHandlerDescriptor"
              ],
              "documentation": "\n\t\t\tDefine an exceptionHandler that manages exceptions\n\t\t\tTo override just contribute again on the extension point,\n\t\t\tparameters will be keep. Default contributed is DefaultNuxeoExceptionHandler.\n\t\t\n",
              "documentationHtml": "<p>\nDefine an exceptionHandler that manages exceptions\nTo override just contribute again on the extension point,\nparameters will be keep. Default contributed is DefaultNuxeoExceptionHandler.\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService/ExtensionPoints/org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService--exceptionhandler",
              "id": "org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService--exceptionhandler",
              "label": "exceptionhandler (org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService)",
              "name": "exceptionhandler",
              "version": "2021.66.4"
            },
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService",
              "descriptors": [
                "org.nuxeo.ecm.platform.web.common.exceptionhandling.descriptor.ErrorHandlersDescriptor"
              ],
              "documentation": "\n\t\t\tDefine a set key/exception to be used to output error\n\t\t\tmessage\n\t\t\n",
              "documentationHtml": "<p>\nDefine a set key/exception to be used to output error\nmessage\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService/ExtensionPoints/org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService--errorhandlers",
              "id": "org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService--errorhandlers",
              "label": "errorhandlers (org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService)",
              "name": "errorhandlers",
              "version": "2021.66.4"
            },
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService",
              "descriptors": [
                "org.nuxeo.ecm.platform.web.common.exceptionhandling.descriptor.RequestDumpDescriptor"
              ],
              "documentation": "\n\t\t\tDefine a class that will take a request and output a\n\t\t\tstring dumping\n\t\t\tinformations.\n\t  \n",
              "documentationHtml": "<p>\nDefine a class that will take a request and output a\nstring dumping\ninformations.\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService/ExtensionPoints/org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService--requestdump",
              "id": "org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService--requestdump",
              "label": "requestdump (org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService)",
              "name": "requestdump",
              "version": "2021.66.4"
            },
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService",
              "descriptors": [
                "org.nuxeo.ecm.platform.web.common.exceptionhandling.descriptor.ListenerDescriptor"
              ],
              "documentation": "\n\t\t\tDefine a listener to exception handling.\n\t\t\n",
              "documentationHtml": "<p>\nDefine a listener to exception handling.\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService/ExtensionPoints/org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService--listener",
              "id": "org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService--listener",
              "label": "listener (org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService)",
              "name": "listener",
              "version": "2021.66.4"
            }
          ],
          "extensions": [],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService",
          "name": "org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService",
          "requirements": [],
          "resolutionOrder": 616,
          "services": [
            {
              "@type": "NXService",
              "componentId": "org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService/Services/org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService",
              "id": "org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService",
              "overriden": false,
              "version": "2021.66.4"
            }
          ],
          "startOrder": 914,
          "version": "2021.66.4",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component\n\tname=\"org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService\">\n\t<service>\n\t\t<provide\n\t\t\tinterface=\"org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService\" />\n\t</service>\n\t<implementation\n\t\tclass=\"org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingComponent\" />\n\t<documentation>\n\t\tThe pluggable exception service. All exceptions that\n\t\tbubbles up outside\n\t\tnuxeo are caught by the NuxeoExceptionFilter.\n\t\tThis\n\t\tservice customize the handler that will deal with an exception.\n\t\t@author Alexandre Russel (arussel@nuxeo.com), Benjamin JALON (bjalon@nuxeo.com)\n\t</documentation>\n\t<extension-point name=\"exceptionhandler\">\n\t\t<documentation>\n\t\t\tDefine an exceptionHandler that manages exceptions\n\t\t\tTo override just contribute again on the extension point,\n\t\t\tparameters will be keep. Default contributed is DefaultNuxeoExceptionHandler.\n\t\t</documentation>\n\t\t<object\n\t\t\tclass=\"org.nuxeo.ecm.platform.web.common.exceptionhandling.descriptor.ExceptionHandlerDescriptor\" />\n\t</extension-point>\n\t<extension-point name=\"errorhandlers\">\n\t\t<documentation>\n\t\t\tDefine a set key/exception to be used to output error\n\t\t\tmessage\n\t\t</documentation>\n\t\t<object\n\t\t\tclass=\"org.nuxeo.ecm.platform.web.common.exceptionhandling.descriptor.ErrorHandlersDescriptor\" />\n\t</extension-point>\n\t<extension-point name=\"requestdump\">\n\t\t<documentation>\n\t\t\tDefine a class that will take a request and output a\n\t\t\tstring dumping\n\t\t\tinformations.\n\t  </documentation>\n\t\t<object\n\t\t\tclass=\"org.nuxeo.ecm.platform.web.common.exceptionhandling.descriptor.RequestDumpDescriptor\" />\n\t</extension-point>\n\t<extension-point name=\"listener\">\n\t\t<documentation>\n\t\t\tDefine a listener to exception handling.\n\t\t</documentation>\n\t\t<object\n\t\t\tclass=\"org.nuxeo.ecm.platform.web.common.exceptionhandling.descriptor.ListenerDescriptor\" />\n\t</extension-point>\n</component>\n",
          "xmlFileName": "/OSGI-INF/exception-handling-service.xml",
          "xmlPureComponent": false
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService--errorhandlers",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingContrib/Contributions/org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingContrib--errorhandlers",
              "id": "org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingContrib--errorhandlers",
              "registrationOrder": 0,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService",
                "name": "org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService",
                "type": "service"
              },
              "version": "2021.66.4",
              "xml": "<extension point=\"errorhandlers\" target=\"org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService\">\n    <errorHandlers bundle=\"messages\" defaultpage=\"/nuxeo_error.jsp\" loggerName=\"nuxeo-error-log\">\n      <handlers>\n        <handler code=\"404\" error=\".*DocumentNotFoundException\" message=\"Error.Document.Not.Found\"/>\n        <handler code=\"403\" error=\".*SecurityException\" message=\"Error.Insuffisant.Rights\" page=\"/nuxeo_error_security.jsp\"/>\n      </handlers>\n    </errorHandlers>\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService--requestdump",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingContrib/Contributions/org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingContrib--requestdump",
              "id": "org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingContrib--requestdump",
              "registrationOrder": 0,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService",
                "name": "org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService",
                "type": "service"
              },
              "version": "2021.66.4",
              "xml": "<extension point=\"requestdump\" target=\"org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService\">\n    <requestdump class=\"org.nuxeo.ecm.platform.web.common.exceptionhandling.service.DefaultRequestDumper\">\n      <!-- you can add names of attributes you don't want to see listed in the request dump.\n        <notListed>\n        <attribute>javax.servlet.forward.request_uri</attribute>\n        </notListed>\n      -->\n    </requestdump>\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService--exceptionhandler",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingContrib/Contributions/org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingContrib--exceptionhandler",
              "id": "org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingContrib--exceptionhandler",
              "registrationOrder": 0,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService",
                "name": "org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService",
                "type": "service"
              },
              "version": "2021.66.4",
              "xml": "<extension point=\"exceptionhandler\" target=\"org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService\">\n    <exceptionHandler class=\"org.nuxeo.ecm.platform.web.common.exceptionhandling.DefaultNuxeoExceptionHandler\"/>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingContrib",
          "name": "org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingContrib",
          "requirements": [],
          "resolutionOrder": 617,
          "services": [],
          "startOrder": 592,
          "version": "2021.66.4",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component\n  name=\"org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingContrib\">\n\n  <extension\n    target=\"org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService\"\n    point=\"errorhandlers\">\n    <errorHandlers bundle=\"messages\" loggerName=\"nuxeo-error-log\"\n      defaultpage=\"/nuxeo_error.jsp\">\n      <handlers>\n        <handler error=\".*DocumentNotFoundException\" code=\"404\"\n          message=\"Error.Document.Not.Found\" />\n        <handler error=\".*SecurityException\" code=\"403\"\n          message=\"Error.Insuffisant.Rights\" page=\"/nuxeo_error_security.jsp\" />\n      </handlers>\n    </errorHandlers>\n  </extension>\n\n  <extension\n    target=\"org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService\"\n    point=\"requestdump\">\n    <requestdump\n      class=\"org.nuxeo.ecm.platform.web.common.exceptionhandling.service.DefaultRequestDumper\">\n      <!-- you can add names of attributes you don't want to see listed in the request dump.\n        <notListed>\n        <attribute>javax.servlet.forward.request_uri</attribute>\n        </notListed>\n      -->\n    </requestdump>\n  </extension>\n\n  <extension\n    target=\"org.nuxeo.ecm.platform.web.common.exceptionhandling.service.ExceptionHandlingService\"\n    point=\"exceptionhandler\">\n    <exceptionHandler class=\"org.nuxeo.ecm.platform.web.common.exceptionhandling.DefaultNuxeoExceptionHandler\" />\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/exception-handling-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.runtime.EventService--listeners",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.web.common.adminStatusListener.contrib/Contributions/org.nuxeo.ecm.platform.web.common.adminStatusListener.contrib--listeners",
              "id": "org.nuxeo.ecm.platform.web.common.adminStatusListener.contrib--listeners",
              "registrationOrder": 4,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.runtime.EventService",
                "name": "org.nuxeo.runtime.EventService",
                "type": "service"
              },
              "version": "2021.66.4",
              "xml": "<extension point=\"listeners\" target=\"org.nuxeo.runtime.EventService\">\n    <listener class=\"org.nuxeo.ecm.platform.web.common.admin.AdministrativeStatusListener\">\n      <topic>administrativeStatus</topic>\n    </listener>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.web.common.adminStatusListener.contrib",
          "name": "org.nuxeo.ecm.platform.web.common.adminStatusListener.contrib",
          "requirements": [],
          "resolutionOrder": 620,
          "services": [],
          "startOrder": 591,
          "version": "2021.66.4",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.web.common.adminStatusListener.contrib\">\n\n  <extension target=\"org.nuxeo.runtime.EventService\" point=\"listeners\">\n    <listener class=\"org.nuxeo.ecm.platform.web.common.admin.AdministrativeStatusListener\">\n      <topic>administrativeStatus</topic>\n    </listener>\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/core-management-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "componentClass": "org.nuxeo.ecm.platform.web.common.locale.LocaleComponent",
          "documentation": "\n    Provide locale and timezone.\n  \n",
          "documentationHtml": "<p>\nProvide locale and timezone.\n</p><p></p>",
          "extensionPoints": [
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.ecm.platform.web.common.locale",
              "descriptors": [
                "org.nuxeo.ecm.platform.web.common.locale.LocaleProviderDescriptor"
              ],
              "documentation": "\n      This extension will provide the unique locale provider to be used.\n      Adding a requirement to the existing default implementation is\n      mandatory to make sure it is overriden.\n      Implementation class should\n      implement {@see\n      org.nuxeo.ecm.platform.web.common.locale.LocaleProvider}\n      An\n      example:\n      <code>\n    <component name=\"org.nuxeo.ecm.platform.profile.locale.contrib.example\">\n        <require>org.nuxeo.ecm.platform.web.common.locale.default.contrib\n          </require>\n        <extension point=\"providers\" target=\"org.nuxeo.ecm.platform.web.common.locale\">\n            <provider class=\"org.nuxeo.ecm.user.center.profile.localeProvider.UserLocaleProvider\"/>\n        </extension>\n    </component>\n</code>\n\n      @author Sun Seng David TAN (stan@nuxeo.com)\n      @author Stephane Lacoin\n      (slacoin@nuxeo.com)\n    \n",
              "documentationHtml": "<p>\nThis extension will provide the unique locale provider to be used.\nAdding a requirement to the existing default implementation is\nmandatory to make sure it is overriden.\nImplementation class should\nimplement {&#64;see\norg.nuxeo.ecm.platform.web.common.locale.LocaleProvider}\nAn\nexample:\n</p><p></p><pre><code>    &lt;component name&#61;&#34;org.nuxeo.ecm.platform.profile.locale.contrib.example&#34;&gt;\n        &lt;require&gt;org.nuxeo.ecm.platform.web.common.locale.default.contrib\n          &lt;/require&gt;\n        &lt;extension point&#61;&#34;providers&#34; target&#61;&#34;org.nuxeo.ecm.platform.web.common.locale&#34;&gt;\n            &lt;provider class&#61;&#34;org.nuxeo.ecm.user.center.profile.localeProvider.UserLocaleProvider&#34;/&gt;\n        &lt;/extension&gt;\n    &lt;/component&gt;\n</code></pre><p>\n(slacoin&#64;nuxeo.com)\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.web.common.locale/ExtensionPoints/org.nuxeo.ecm.platform.web.common.locale--providers",
              "id": "org.nuxeo.ecm.platform.web.common.locale--providers",
              "label": "providers (org.nuxeo.ecm.platform.web.common.locale)",
              "name": "providers",
              "version": "2021.66.4"
            }
          ],
          "extensions": [],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.web.common.locale",
          "name": "org.nuxeo.ecm.platform.web.common.locale",
          "requirements": [],
          "resolutionOrder": 621,
          "services": [
            {
              "@type": "NXService",
              "componentId": "org.nuxeo.ecm.platform.web.common.locale",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.web.common.locale/Services/org.nuxeo.ecm.platform.web.common.locale.LocaleProvider",
              "id": "org.nuxeo.ecm.platform.web.common.locale.LocaleProvider",
              "overriden": false,
              "version": "2021.66.4"
            }
          ],
          "startOrder": 915,
          "version": "2021.66.4",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.web.common.locale\">\n  <implementation\n    class=\"org.nuxeo.ecm.platform.web.common.locale.LocaleComponent\" />\n  <documentation>\n    Provide locale and timezone.\n  </documentation>\n\n  <service>\n    <provide interface=\"org.nuxeo.ecm.platform.web.common.locale.LocaleProvider\" />\n  </service>\n  <extension-point name=\"providers\">\n    <documentation>\n      This extension will provide the unique locale provider to be used.\n      Adding a requirement to the existing default implementation is\n      mandatory to make sure it is overriden.\n      Implementation class should\n      implement {@see\n      org.nuxeo.ecm.platform.web.common.locale.LocaleProvider}\n      An\n      example:\n      <code>\n        <component\n          name=\"org.nuxeo.ecm.platform.profile.locale.contrib.example\">\n          <require>org.nuxeo.ecm.platform.web.common.locale.default.contrib\n          </require>\n          <extension target=\"org.nuxeo.ecm.platform.web.common.locale\"\n            point=\"providers\">\n            <provider\n              class=\"org.nuxeo.ecm.user.center.profile.localeProvider.UserLocaleProvider\" />\n          </extension>\n        </component>\n      </code>\n      @author Sun Seng David TAN (stan@nuxeo.com)\n      @author Stephane Lacoin\n      (slacoin@nuxeo.com)\n    </documentation>\n    <object\n      class=\"org.nuxeo.ecm.platform.web.common.locale.LocaleProviderDescriptor\" />\n  </extension-point>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/locale-framework.xml",
          "xmlPureComponent": false
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.web.common.locale--providers",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.web.common.locale.default.contrib/Contributions/org.nuxeo.ecm.platform.web.common.locale.default.contrib--providers",
              "id": "org.nuxeo.ecm.platform.web.common.locale.default.contrib--providers",
              "registrationOrder": 0,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.web.common.locale",
                "name": "org.nuxeo.ecm.platform.web.common.locale",
                "type": "service"
              },
              "version": "2021.66.4",
              "xml": "<extension point=\"providers\" target=\"org.nuxeo.ecm.platform.web.common.locale\">\n    <provider class=\"org.nuxeo.ecm.platform.web.common.locale.DefaultLocaleProvider\"/>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.web.common.locale.default.contrib",
          "name": "org.nuxeo.ecm.platform.web.common.locale.default.contrib",
          "requirements": [],
          "resolutionOrder": 622,
          "services": [],
          "startOrder": 593,
          "version": "2021.66.4",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.web.common.locale.default.contrib\">\n  <extension target=\"org.nuxeo.ecm.platform.web.common.locale\" point=\"providers\">\n    <provider class=\"org.nuxeo.ecm.platform.web.common.locale.DefaultLocaleProvider\" />\n  </extension>\n</component>\n",
          "xmlFileName": "/OSGI-INF/locale-default-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService--loginScreen",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.ui.web.login/Contributions/org.nuxeo.ecm.platform.ui.web.login--loginScreen",
              "id": "org.nuxeo.ecm.platform.ui.web.login--loginScreen",
              "registrationOrder": 1,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService",
                "name": "org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService",
                "type": "service"
              },
              "version": "2021.66.4",
              "xml": "<extension point=\"loginScreen\" target=\"org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService\">\n    <loginScreenConfig>\n      <defaultLocale>en</defaultLocale>\n      <supportedLocales>\n        <locale>en_GB</locale>\n        <locale>en_US</locale>\n      </supportedLocales>\n    </loginScreenConfig>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.ui.web.login",
          "name": "org.nuxeo.ecm.platform.ui.web.login",
          "requirements": [],
          "resolutionOrder": 623,
          "services": [],
          "startOrder": 559,
          "version": "2021.66.4",
          "xmlFileContent": "<component name=\"org.nuxeo.ecm.platform.ui.web.login\" version=\"1.0\">\n  <extension\n    target=\"org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService\"\n    point=\"loginScreen\">\n    <loginScreenConfig>\n      <defaultLocale>en</defaultLocale>\n      <supportedLocales>\n        <locale>en_GB</locale>\n        <locale>en_US</locale>\n      </supportedLocales>\n    </loginScreenConfig>\n  </extension>\n</component>\n",
          "xmlFileName": "/OSGI-INF/login-screen-config.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentation": "\n      Property that allows to disable strict CORS checks when a request has Origin: null.\n      This may happen for local files, or for a JavaScript-triggered redirect.\n      Setting this to true may expose the application to CSRF problems from files\n      locally hosted on the user's disk.\n\n      @since 10.3\n    \n",
              "documentationHtml": "<p>\nProperty that allows to disable strict CORS checks when a request has Origin: null.\nThis may happen for local files, or for a JavaScript-triggered redirect.\nSetting this to true may expose the application to CSRF problems from files\nlocally hosted on the user&#39;s disk.\n</p><p>\n&#64;since 10.3\n</p><p></p>",
              "extensionPoint": "org.nuxeo.runtime.ConfigurationService--configuration",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.ui.web.cors/Contributions/org.nuxeo.ecm.platform.ui.web.cors--configuration",
              "id": "org.nuxeo.ecm.platform.ui.web.cors--configuration",
              "registrationOrder": 48,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.runtime.ConfigurationService",
                "name": "org.nuxeo.runtime.ConfigurationService",
                "type": "service"
              },
              "version": "2021.66.4",
              "xml": "<extension point=\"configuration\" target=\"org.nuxeo.runtime.ConfigurationService\">\n    <documentation>\n      Property that allows to disable strict CORS checks when a request has Origin: null.\n      This may happen for local files, or for a JavaScript-triggered redirect.\n      Setting this to true may expose the application to CSRF problems from files\n      locally hosted on the user's disk.\n\n      @since 10.3\n    </documentation>\n    <property name=\"nuxeo.cors.allowNullOrigin\">false</property>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.ui.web.cors",
          "name": "org.nuxeo.ecm.platform.ui.web.cors",
          "requirements": [],
          "resolutionOrder": 625,
          "services": [],
          "startOrder": 555,
          "version": "2021.66.4",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.ui.web.cors\">\n\n  <extension target=\"org.nuxeo.runtime.ConfigurationService\" point=\"configuration\">\n    <documentation>\n      Property that allows to disable strict CORS checks when a request has Origin: null.\n      This may happen for local files, or for a JavaScript-triggered redirect.\n      Setting this to true may expose the application to CSRF problems from files\n      locally hosted on the user's disk.\n\n      @since 10.3\n    </documentation>\n    <property name=\"nuxeo.cors.allowNullOrigin\">false</property>\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/cors-configuration.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentation": "\n      Properties controlling idempotent requests TTL and KeyValue storename.\n\n      Default TTL in seconds matches 1 day.\n\n      @since 11.5\n    \n",
              "documentationHtml": "<p>\nProperties controlling idempotent requests TTL and KeyValue storename.\n</p><p>\nDefault TTL in seconds matches 1 day.\n</p><p>\n&#64;since 11.5\n</p><p></p>",
              "extensionPoint": "org.nuxeo.runtime.ConfigurationService--configuration",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.web.idempotency/Contributions/org.nuxeo.ecm.platform.web.idempotency--configuration",
              "id": "org.nuxeo.ecm.platform.web.idempotency--configuration",
              "registrationOrder": 49,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.runtime.ConfigurationService",
                "name": "org.nuxeo.runtime.ConfigurationService",
                "type": "service"
              },
              "version": "2021.66.4",
              "xml": "<extension point=\"configuration\" target=\"org.nuxeo.runtime.ConfigurationService\">\n    <documentation>\n      Properties controlling idempotent requests TTL and KeyValue storename.\n\n      Default TTL in seconds matches 1 day.\n\n      @since 11.5\n    </documentation>\n    <property name=\"org.nuxeo.request.idempotency.ttl.duration\">1d</property>\n    <property name=\"org.nuxeo.request.idempotency.keyvaluestore.name\">idempotentrequest</property>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common/org.nuxeo.ecm.platform.web.idempotency",
          "name": "org.nuxeo.ecm.platform.web.idempotency",
          "requirements": [],
          "resolutionOrder": 626,
          "services": [],
          "startOrder": 595,
          "version": "2021.66.4",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.web.idempotency\">\n\n  <extension target=\"org.nuxeo.runtime.ConfigurationService\" point=\"configuration\">\n    <documentation>\n      Properties controlling idempotent requests TTL and KeyValue storename.\n\n      Default TTL in seconds matches 1 day.\n\n      @since 11.5\n    </documentation>\n    <property name=\"org.nuxeo.request.idempotency.ttl.duration\">1d</property>\n    <property name=\"org.nuxeo.request.idempotency.keyvaluestore.name\">idempotentrequest</property>\n  </extension>\n\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/idempotency-configuration.xml",
          "xmlPureComponent": true
        }
      ],
      "fileName": "nuxeo-platform-web-common-2021.66.4.jar",
      "groupId": "org.nuxeo.ecm.platform",
      "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.web/org.nuxeo.ecm.platform.web.common",
      "id": "org.nuxeo.ecm.platform.web.common",
      "location": "",
      "manifest": "Manifest-Version: 1.0\r\nArchiver-Version: Plexus Archiver\r\nCreated-By: 1.6.0_20 (Sun Microsystems Inc.)\r\nBuilt-By: root\r\nBuild-Jdk: 11.0.25\r\nBundle-ManifestVersion: 2\r\nBundle-Version: 0.0.0.SNAPSHOT\r\nExport-Package: org.nuxeo.ecm.platform.ui.web.auth,org.nuxeo.ecm.platf\r\n orm.ui.web.auth.interfaces,org.nuxeo.ecm.platform.ui.web.auth.plugins\r\n ,org.nuxeo.ecm.platform.ui.web.auth.service,org.nuxeo.ecm.platform.ui\r\n .web.cache,org.nuxeo.ecm.platform.ui.web.download,org.nuxeo.ecm.platf\r\n orm.web.common.ajax,org.nuxeo.ecm.platform.web.common.ajax.service,or\r\n g.nuxeo.ecm.platform.web.common.exceptionhandling,org.nuxeo.ecm.platf\r\n orm.web.common.exceptionhandling.descriptor,org.nuxeo.ecm.platform.we\r\n b.common.exceptionhandling.service,org.nuxeo.ecm.platform.web.common.\r\n requestcontroller.filter,org.nuxeo.ecm.platform.web.common.requestcon\r\n troller.service,org.nuxeo.ecm.platform.web.common.resources,org.nuxeo\r\n .ecm.platform.web.common.vh\r\nBundle-ActivationPolicy: lazy\r\nBundle-ClassPath: .\r\nBundle-Name: Nuxeo ECM Web Common framework\r\nBundle-RequiredExecutionEnvironment: JavaSE-1.6\r\nNuxeo-Component: OSGI-INF/authentication-framework.xml,OSGI-INF/authen\r\n tication-contrib.xml,OSGI-INF/web-request-controller-framework.xml,OS\r\n GI-INF/web-request-controller-contrib.xml,OSGI-INF/exception-handling\r\n -service.xml,OSGI-INF/exception-handling-contrib.xml,OSGI-INF/core-ma\r\n nagement-contrib.xml,OSGI-INF/locale-framework.xml,OSGI-INF/locale-de\r\n fault-contrib.xml,OSGI-INF/login-screen-config.xml,OSGI-INF/cors-conf\r\n iguration.xml,OSGI-INF/idempotency-configuration.xml\r\nBundle-SymbolicName: org.nuxeo.ecm.platform.web.common;singleton:=true\r\nImport-Package: javax.faces.context,javax.security.auth,javax.security\r\n .auth.callback,javax.security.auth.login,javax.servlet,javax.servlet.\r\n http,org.apache.commons.httpclient,org.apache.commons.httpclient.meth\r\n ods,org.apache.commons.httpclient.params,org.apache.commons.logging,o\r\n rg.nuxeo.common.utils,org.nuxeo.common.utils.i18n,org.nuxeo.common.xm\r\n ap.annotation,org.nuxeo.ecm.core;api=split,org.nuxeo.ecm.core.api;api\r\n =split,org.nuxeo.ecm.core.api.blobholder,org.nuxeo.ecm.core.api.repos\r\n itory,org.nuxeo.ecm.core.event,org.nuxeo.ecm.core.event.impl,org.nuxe\r\n o.ecm.core.management.api,org.nuxeo.ecm.core.utils,org.nuxeo.ecm.plat\r\n form.api.login,org.nuxeo.ecm.platform.login,org.nuxeo.ecm.platform.us\r\n ermanager,org.nuxeo.runtime,org.nuxeo.runtime.api,org.nuxeo.runtime.m\r\n odel,org.nuxeo.runtime.services.event,org.nuxeo.runtime.transaction\r\n\r\n",
      "maxResolutionOrder": 626,
      "minResolutionOrder": 609,
      "packages": [],
      "requirements": [],
      "version": "2021.66.4"
    }
  ],
  "creationDate": 1738059524582,
  "key": "Nuxeo Platform-2021.66",
  "name": "Nuxeo Platform",
  "operations": [],
  "packages": [],
  "pluginSnapshots": {},
  "releaseDate": 1738059524582,
  "version": "2021.66"
}